home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / PInterfaces / QuickTimeVR.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  30.3 KB  |  721 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QuickTimeVR.p
  3.  
  4.      Contains:    QuickTime VR interfaces
  5.  
  6.      Version:    Technology:    QuickTime VR 2.1
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1997-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT QuickTimeVR;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __QUICKTIMEVR__}
  27. {$SETC __QUICKTIMEVR__ := 1}
  28.  
  29. {$I+}
  30. {$SETC QuickTimeVRIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __CONDITIONALMACROS__}
  34. {$I ConditionalMacros.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __DIALOGS__}
  37. {$I Dialogs.p}
  38. {$ENDC}
  39. {$IFC UNDEFINED __MOVIES__}
  40. {$I Movies.p}
  41. {$ENDC}
  42.  
  43.  
  44. {$PUSH}
  45. {$ALIGN MAC68K}
  46. {$LibExport+}
  47.  
  48. {*****************************************************************************
  49.  *                                                                           **
  50.  * ABOUT QTVR_OLD_CALLS:                                                     **
  51.  *                                                                           **
  52.  * NOTE: Define QTVR_OLD_CALLS to 1 for your application makefile/project    **
  53.  *       only if you are sure that you need to use the older calls for       **
  54.  *       compatibility with VR 2.0 and 2.0.1 on the Macintosh                ** 
  55.  *                                                                           **
  56.  ****************************************************************************}
  57. {$IFC UNDEFINED QTVR_OLD_CALLS }
  58. {$SETC QTVR_OLD_CALLS := 0 }
  59. {$ENDC}
  60.  
  61.  
  62. TYPE
  63.     QTVRInstance = ^LONGINT;
  64.  
  65.  
  66. CONST
  67.     kQTVRControllerSubType        = 'ctyp';
  68.     kQTVRQTVRType                = 'qtvr';
  69.     kQTVRPanoramaType            = 'pano';
  70.     kQTVRObjectType                = 'obje';
  71.     kQTVROldPanoType            = 'STpn';                        {  Used in QTVR 1.0 release }
  72.     kQTVROldObjectType            = 'stna';                        {  Used in QTVR 1.0 release }
  73.  
  74. {$IFC TARGET_OS_MAC }
  75. {$ELSEC}
  76. {$ENDC}  {TARGET_OS_MAC}
  77.  
  78. {  QTVR hot spot types }
  79.     kQTVRHotSpotLinkType        = 'link';
  80.     kQTVRHotSpotURLType            = 'url ';
  81.     kQTVRHotSpotUndefinedType    = 'undf';
  82.  
  83. {  Special Values for nodeID in QTVRGoToNodeID }
  84.     kQTVRCurrentNode            = 0;
  85.     kQTVRPreviousNode            = $80000000;
  86.     kQTVRDefaultNode            = $80000001;
  87.  
  88. {  Panorama correction modes used for the kQTVRImagingCorrection imaging property }
  89.     kQTVRNoCorrection            = 0;
  90.     kQTVRPartialCorrection        = 1;
  91.     kQTVRFullCorrection            = 2;
  92.  
  93. {  Imaging Modes used by QTVRSetImagingProperty, QTVRGetImagingProperty, QTVRUpdate, QTVRBeginUpdate }
  94.     kQTVRStatic                    = 1;
  95.     kQTVRMotion                    = 2;
  96.     kQTVRCurrentMode            = 0;                            {  Special Value for QTVRUpdate }
  97.     kQTVRAllModes                = 100;                            {  Special value for QTVRSetProperty }
  98.  
  99.  
  100. TYPE
  101.     QTVRImagingMode                        = UInt32;
  102. {  Imaging Properties used by QTVRSetImagingProperty, QTVRGetImagingProperty }
  103.  
  104. CONST
  105.     kQTVRImagingCorrection        = 1;
  106.     kQTVRImagingQuality            = 2;
  107.     kQTVRImagingDirectDraw        = 3;
  108.     kQTVRImagingCurrentMode        = 100;                            {  Get Only }
  109.  
  110. {  OR the above with kImagingDefaultValue to get/set the default value }
  111.     kImagingDefaultValue        = $80000000;
  112.  
  113. {  Transition Types used by QTVRSetTransitionProperty, QTVREnableTransition }
  114.     kQTVRTransitionSwing        = 1;
  115.  
  116. {  Transition Properties QTVRSetTransitionProperty }
  117.     kQTVRTransitionSpeed        = 1;
  118.     kQTVRTransitionDirection    = 2;
  119.  
  120. {  Constraint values used to construct value returned by GetConstraintStatus }
  121.     kQTVRUnconstrained            = 0;
  122.     kQTVRCantPanLeft            = $00000001;
  123.     kQTVRCantPanRight            = $00000002;
  124.     kQTVRCantPanUp                = $00000004;
  125.     kQTVRCantPanDown            = $00000008;
  126.     kQTVRCantZoomIn                = $00000010;
  127.     kQTVRCantZoomOut            = $00000020;
  128.     kQTVRCantTranslateLeft        = $00000040;
  129.     kQTVRCantTranslateRight        = $00000080;
  130.     kQTVRCantTranslateUp        = $00000100;
  131.     kQTVRCantTranslateDown        = $00000200;
  132.  
  133. {  Object-only mouse mode values used to construct value returned by QTVRGetCurrentMouseMode }
  134.     kQTVRPanning                = $00000001;                    {  standard objects, "object only" controllers }
  135.     kQTVRTranslating            = $00000002;                    {  all objects }
  136.     kQTVRZooming                = $00000004;                    {  all objects }
  137.     kQTVRScrolling                = $00000008;                    {  standard object arrow scrollers and joystick object }
  138.     kQTVRSelecting                = $00000010;                    {  object absolute controller }
  139.  
  140. {  Properties for use with QTVRSetInteractionProperty/GetInteractionProperty }
  141.     kQTVRInteractionMouseClickHysteresis = 1;                    {  pixels within which the mouse is considered not to have moved (UInt16) }
  142.     kQTVRInteractionMouseClickTimeout = 2;                        {  ticks after which a mouse click times out and turns into panning (UInt32) }
  143.     kQTVRInteractionPanTiltSpeed = 3;                            {  control the relative pan/tilt speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5; }
  144.     kQTVRInteractionZoomSpeed    = 4;                            {  control the relative zooming speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5; }
  145.     kQTVRInteractionTranslateOnMouseDown = 101;                    {  Holding MouseDown with this setting translates zoomed object movies (Boolean) }
  146.     kQTVRInteractionMouseMotionScale = 102;                        {  The maximum angle of rotation caused by dragging across the display window. (* float) }
  147.     kQTVRInteractionNudgeMode    = 103;                            {  A QTVRNudgeMode: rotate, translate, or the same as the current mouse mode. Requires QTVR 2.1 }
  148.  
  149. {  OR the above with kQTVRInteractionDefaultValue to get/set the default value }
  150.     kQTVRInteractionDefaultValue = $80000000;
  151.  
  152.  
  153. {  Geometry constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo }
  154.     kQTVRUseMovieGeometry        = 0;
  155.     kQTVRVerticalCylinder        = 'vcyl';
  156.  
  157. {  Resolution constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo }
  158.     kQTVRDefaultRes                = 0;
  159.     kQTVRFullRes                = $00000001;
  160.     kQTVRHalfRes                = $00000002;
  161.     kQTVRQuarterRes                = $00000004;
  162.  
  163. {  QTVR-specific pixelFormat constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo }
  164.     kQTVRUseMovieDepth            = 0;
  165.  
  166. {  Cache Size Pref constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings }
  167.     kQTVRMinimumCache            = -1;
  168.     kQTVRSuggestedCache            = 0;
  169.     kQTVRFullCache                = 1;
  170.  
  171. {  Angular units used by QTVRSetAngularUnits }
  172.     kQTVRDegrees                = 0;
  173.     kQTVRRadians                = 1;
  174.  
  175.  
  176. TYPE
  177.     QTVRAngularUnits                    = UInt32;
  178. {  Values for enableFlag parameter in QTVREnableHotSpot }
  179.  
  180. CONST
  181.     kQTVRHotSpotID                = 0;
  182.     kQTVRHotSpotType            = 1;
  183.     kQTVRAllHotSpots            = 2;
  184.  
  185. {  Values for kind parameter in QTVRGet/SetConstraints, QTVRGetViewingLimits }
  186.     kQTVRPan                    = 0;
  187.     kQTVRTilt                    = 1;
  188.     kQTVRFieldOfView            = 2;
  189.     kQTVRViewCenterH            = 4;                            {  WrapAndConstrain only }
  190.     kQTVRViewCenterV            = 5;                            {  WrapAndConstrain only }
  191.  
  192. {  Values for setting parameter in QTVRSetAnimationSetting, QTVRGetAnimationSetting }
  193.                                                                 {  View Frame Animation Settings }
  194.     kQTVRPalindromeViewFrames    = 1;
  195.     kQTVRStartFirstViewFrame    = 2;
  196.     kQTVRDontLoopViewFrames        = 3;
  197.     kQTVRPlayEveryViewFrame        = 4;                            {  Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  198.                                                                 {  View Animation Settings }
  199.     kQTVRSyncViewToFrameRate    = 16;
  200.     kQTVRPalindromeViews        = 17;
  201.     kQTVRPlayStreamingViews        = 18;                            {  Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  202.  
  203.  
  204. TYPE
  205.     QTVRObjectAnimationSetting            = UInt32;
  206.  
  207. CONST
  208.     kQTVRWrapPan                = 1;
  209.     kQTVRWrapTilt                = 2;
  210.     kQTVRCanZoom                = 3;
  211.     kQTVRReverseHControl        = 4;
  212.     kQTVRReverseVControl        = 5;
  213.     kQTVRSwapHVControl            = 6;
  214.     kQTVRTranslation            = 7;
  215.  
  216.  
  217. TYPE
  218.     QTVRControlSetting                    = UInt32;
  219.  
  220. CONST
  221.     kQTVRDefault                = 0;
  222.     kQTVRCurrent                = 2;
  223.     kQTVRMouseDown                = 3;
  224.  
  225.  
  226. TYPE
  227.     QTVRViewStateType                    = UInt32;
  228.  
  229. CONST
  230.     kQTVRRight                    = 0;
  231.     kQTVRUpRight                = 45;
  232.     kQTVRUp                        = 90;
  233.     kQTVRUpLeft                    = 135;
  234.     kQTVRLeft                    = 180;
  235.     kQTVRDownLeft                = 225;
  236.     kQTVRDown                    = 270;
  237.     kQTVRDownRight                = 315;
  238.  
  239.  
  240. TYPE
  241.     QTVRNudgeControl                    = UInt32;
  242.  
  243. CONST
  244.     kQTVRNudgeRotate            = 0;
  245.     kQTVRNudgeTranslate            = 1;
  246.     kQTVRNudgeSameAsMouse        = 2;
  247.  
  248.  
  249. TYPE
  250.     QTVRNudgeMode                        = UInt32;
  251. {  Flags to control elements of the QTVR control bar (set via mcActionSetFlags)  }
  252.  
  253. CONST
  254.     mcFlagQTVRSuppressBackBtn    = $00010000;
  255.     mcFlagQTVRSuppressZoomBtns    = $00020000;
  256.     mcFlagQTVRSuppressHotSpotBtn = $00040000;
  257.     mcFlagQTVRSuppressTranslateBtn = $00080000;
  258.     mcFlagQTVRSuppressHelpText    = $00100000;
  259.     mcFlagQTVRSuppressHotSpotNames = $00200000;
  260.     mcFlagQTVRExplicitFlagSet    = $80000000;                    {  bits 0->30 should be interpreted as "explicit on" for the corresponding suppression bits }
  261.  
  262. {  Cursor types used in type field of QTVRCursorRecord }
  263.     kQTVRUseDefaultCursor        = 0;
  264.     kQTVRStdCursorType            = 1;
  265.     kQTVRColorCursorType        = 2;
  266.  
  267. {  Values for flags parameter in QTVRMouseOverHotSpot callback }
  268.     kQTVRHotSpotEnter            = 0;
  269.     kQTVRHotSpotWithin            = 1;
  270.     kQTVRHotSpotLeave            = 2;
  271.  
  272. {  Values for flags parameter in QTVRSetPrescreenImagingCompleteProc }
  273.     kQTVRPreScreenEveryIdle        = $00000001;                    {  Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  274.  
  275. {  Values for flags field of areasOfInterest in QTVRSetBackBufferImagingProc }
  276.     kQTVRBackBufferEveryUpdate    = $00000001;
  277.     kQTVRBackBufferEveryIdle    = $00000002;
  278.     kQTVRBackBufferAlwaysRefresh = $00000004;
  279.  
  280. {  Values for flagsIn parameter in QTVRBackBufferImaging callback }
  281.     kQTVRBackBufferRectVisible    = $00000001;
  282.     kQTVRBackBufferWasRefreshed    = $00000002;
  283.  
  284. {  Values for flagsOut parameter in QTVRBackBufferImaging callback }
  285.     kQTVRBackBufferFlagDidDraw    = $00000001;
  286.     kQTVRBackBufferFlagLastFlag    = $80000000;
  287.  
  288. {  QTVRCursorRecord used in QTVRReplaceCursor }
  289.  
  290. TYPE
  291.     QTVRCursorRecordPtr = ^QTVRCursorRecord;
  292.     QTVRCursorRecord = RECORD
  293.         theType:                UInt16;                                    {  field was previously named "type" }
  294.         rsrcID:                    SInt16;
  295.         handle:                    Handle;
  296.     END;
  297.  
  298.     QTVRFloatPointPtr = ^QTVRFloatPoint;
  299.     QTVRFloatPoint = RECORD
  300.         x:                        Single;
  301.         y:                        Single;
  302.     END;
  303.  
  304. {  Struct used for areasOfInterest parameter in QTVRSetBackBufferImagingProc }
  305.     QTVRAreaOfInterestPtr = ^QTVRAreaOfInterest;
  306.     QTVRAreaOfInterest = RECORD
  307.         panAngle:                Single;
  308.         tiltAngle:                Single;
  309.         width:                    Single;
  310.         height:                    Single;
  311.         flags:                    UInt32;
  312.     END;
  313.  
  314. {
  315.   =================================================================================================
  316.    Callback routines 
  317.   -------------------------------------------------------------------------------------------------
  318. }
  319.  
  320. {$IFC TYPED_FUNCTION_POINTERS}
  321.     QTVRLeavingNodeProcPtr = FUNCTION(qtvr: QTVRInstance; fromNodeID: UInt32; toNodeID: UInt32; VAR cancel: BOOLEAN; refCon: SInt32): OSErr;
  322. {$ELSEC}
  323.     QTVRLeavingNodeProcPtr = ProcPtr;
  324. {$ENDC}
  325.  
  326. {$IFC TYPED_FUNCTION_POINTERS}
  327.     QTVREnteringNodeProcPtr = FUNCTION(qtvr: QTVRInstance; nodeID: UInt32; refCon: SInt32): OSErr;
  328. {$ELSEC}
  329.     QTVREnteringNodeProcPtr = ProcPtr;
  330. {$ENDC}
  331.  
  332. {$IFC TYPED_FUNCTION_POINTERS}
  333.     QTVRMouseOverHotSpotProcPtr = FUNCTION(qtvr: QTVRInstance; hotSpotID: UInt32; flags: UInt32; refCon: SInt32): OSErr;
  334. {$ELSEC}
  335.     QTVRMouseOverHotSpotProcPtr = ProcPtr;
  336. {$ENDC}
  337.  
  338. {$IFC TYPED_FUNCTION_POINTERS}
  339.     QTVRImagingCompleteProcPtr = FUNCTION(qtvr: QTVRInstance; refCon: SInt32): OSErr;
  340. {$ELSEC}
  341.     QTVRImagingCompleteProcPtr = ProcPtr;
  342. {$ENDC}
  343.  
  344. {$IFC TYPED_FUNCTION_POINTERS}
  345.     QTVRBackBufferImagingProcPtr = FUNCTION(qtvr: QTVRInstance; VAR drawRect: Rect; areaIndex: UInt16; flagsIn: UInt32; VAR flagsOut: UInt32; refCon: SInt32): OSErr;
  346. {$ELSEC}
  347.     QTVRBackBufferImagingProcPtr = ProcPtr;
  348. {$ENDC}
  349.  
  350.     QTVRLeavingNodeUPP = UniversalProcPtr;
  351.     QTVREnteringNodeUPP = UniversalProcPtr;
  352.     QTVRMouseOverHotSpotUPP = UniversalProcPtr;
  353.     QTVRImagingCompleteUPP = UniversalProcPtr;
  354.     QTVRBackBufferImagingUPP = UniversalProcPtr;
  355.  
  356. CONST
  357.     uppQTVRLeavingNodeProcInfo = $0000FFE0;
  358.     uppQTVREnteringNodeProcInfo = $00000FE0;
  359.     uppQTVRMouseOverHotSpotProcInfo = $00003FE0;
  360.     uppQTVRImagingCompleteProcInfo = $000003E0;
  361.     uppQTVRBackBufferImagingProcInfo = $0003FBE0;
  362.  
  363. FUNCTION NewQTVRLeavingNodeProc(userRoutine: QTVRLeavingNodeProcPtr): QTVRLeavingNodeUPP;
  364.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  365.     INLINE $2E9F;
  366.     {$ENDC}
  367.  
  368. FUNCTION NewQTVREnteringNodeProc(userRoutine: QTVREnteringNodeProcPtr): QTVREnteringNodeUPP;
  369.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  370.     INLINE $2E9F;
  371.     {$ENDC}
  372.  
  373. FUNCTION NewQTVRMouseOverHotSpotProc(userRoutine: QTVRMouseOverHotSpotProcPtr): QTVRMouseOverHotSpotUPP;
  374.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  375.     INLINE $2E9F;
  376.     {$ENDC}
  377.  
  378. FUNCTION NewQTVRImagingCompleteProc(userRoutine: QTVRImagingCompleteProcPtr): QTVRImagingCompleteUPP;
  379.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  380.     INLINE $2E9F;
  381.     {$ENDC}
  382.  
  383. FUNCTION NewQTVRBackBufferImagingProc(userRoutine: QTVRBackBufferImagingProcPtr): QTVRBackBufferImagingUPP;
  384.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  385.     INLINE $2E9F;
  386.     {$ENDC}
  387.  
  388. FUNCTION CallQTVRLeavingNodeProc(qtvr: QTVRInstance; fromNodeID: UInt32; toNodeID: UInt32; VAR cancel: BOOLEAN; refCon: SInt32; userRoutine: QTVRLeavingNodeUPP): OSErr;
  389.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  390.     INLINE $205F, $4E90;
  391.     {$ENDC}
  392.  
  393. FUNCTION CallQTVREnteringNodeProc(qtvr: QTVRInstance; nodeID: UInt32; refCon: SInt32; userRoutine: QTVREnteringNodeUPP): OSErr;
  394.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  395.     INLINE $205F, $4E90;
  396.     {$ENDC}
  397.  
  398. FUNCTION CallQTVRMouseOverHotSpotProc(qtvr: QTVRInstance; hotSpotID: UInt32; flags: UInt32; refCon: SInt32; userRoutine: QTVRMouseOverHotSpotUPP): OSErr;
  399.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  400.     INLINE $205F, $4E90;
  401.     {$ENDC}
  402.  
  403. FUNCTION CallQTVRImagingCompleteProc(qtvr: QTVRInstance; refCon: SInt32; userRoutine: QTVRImagingCompleteUPP): OSErr;
  404.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  405.     INLINE $205F, $4E90;
  406.     {$ENDC}
  407.  
  408. FUNCTION CallQTVRBackBufferImagingProc(qtvr: QTVRInstance; VAR drawRect: Rect; areaIndex: UInt16; flagsIn: UInt32; VAR flagsOut: UInt32; refCon: SInt32; userRoutine: QTVRBackBufferImagingUPP): OSErr;
  409.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  410.     INLINE $205F, $4E90;
  411.     {$ENDC}
  412. {
  413.   =================================================================================================
  414.     QTVR Intercept Struct, Callback, Routine Descriptors 
  415.   -------------------------------------------------------------------------------------------------
  416. }
  417.  
  418.  
  419. CONST
  420.     kQTVRSetPanAngleSelector    = $2000;
  421.     kQTVRSetTiltAngleSelector    = $2001;
  422.     kQTVRSetFieldOfViewSelector    = $2002;
  423.     kQTVRSetViewCenterSelector    = $2003;
  424.     kQTVRMouseEnterSelector        = $2004;
  425.     kQTVRMouseWithinSelector    = $2005;
  426.     kQTVRMouseLeaveSelector        = $2006;
  427.     kQTVRMouseDownSelector        = $2007;
  428.     kQTVRMouseStillDownSelector    = $2008;
  429.     kQTVRMouseUpSelector        = $2009;
  430.     kQTVRTriggerHotSpotSelector    = $200A;
  431.     kQTVRGetHotSpotTypeSelector    = $200B;                        {  Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  432.  
  433.  
  434. TYPE
  435.     QTVRProcSelector                    = UInt32;
  436.     QTVRInterceptRecordPtr = ^QTVRInterceptRecord;
  437.     QTVRInterceptRecord = RECORD
  438.         reserved1:                SInt32;
  439.         selector:                SInt32;
  440.         reserved2:                SInt32;
  441.         reserved3:                SInt32;
  442.         paramCount:                SInt32;
  443.         parameter:                ARRAY [0..5] OF Ptr;
  444.     END;
  445.  
  446.     QTVRInterceptPtr                    = ^QTVRInterceptRecord;
  447. {  Prototype for Intercept Proc callback }
  448. {$IFC TYPED_FUNCTION_POINTERS}
  449.     QTVRInterceptProcPtr = PROCEDURE(qtvr: QTVRInstance; qtvrMsg: QTVRInterceptPtr; refCon: SInt32; VAR cancel: BOOLEAN);
  450. {$ELSEC}
  451.     QTVRInterceptProcPtr = ProcPtr;
  452. {$ENDC}
  453.  
  454.     QTVRInterceptUPP = UniversalProcPtr;
  455.  
  456. CONST
  457.     uppQTVRInterceptProcInfo = $00003FC0;
  458.  
  459. FUNCTION NewQTVRInterceptProc(userRoutine: QTVRInterceptProcPtr): QTVRInterceptUPP;
  460.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  461.     INLINE $2E9F;
  462.     {$ENDC}
  463.  
  464. PROCEDURE CallQTVRInterceptProc(qtvr: QTVRInstance; qtvrMsg: QTVRInterceptPtr; refCon: SInt32; VAR cancel: BOOLEAN; userRoutine: QTVRInterceptUPP);
  465.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  466.     INLINE $205F, $4E90;
  467.     {$ENDC}
  468. {
  469.   =================================================================================================
  470.     Initialization QTVR calls 
  471.   -------------------------------------------------------------------------------------------------
  472.    Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) and only work on Non-Macintosh platforms
  473. }
  474. {$IFC NOT TARGET_OS_MAC }
  475. FUNCTION InitializeQTVR: OSErr; C;
  476. FUNCTION TerminateQTVR: OSErr; C;
  477. {$ENDC}
  478.  
  479. {
  480.   =================================================================================================
  481.     General QTVR calls 
  482.   -------------------------------------------------------------------------------------------------
  483. }
  484. FUNCTION QTVRGetQTVRTrack(theMovie: Movie; index: SInt32): Track; C;
  485. FUNCTION QTVRGetQTVRInstance(VAR qtvr: QTVRInstance; qtvrTrack: Track; mc: MovieController): OSErr; C;
  486. {
  487.   =================================================================================================
  488.     Viewing Angles and Zooming 
  489.   -------------------------------------------------------------------------------------------------
  490. }
  491.  
  492. FUNCTION QTVRSetPanAngle(qtvr: QTVRInstance; panAngle: Single): OSErr; C;
  493. FUNCTION QTVRGetPanAngle(qtvr: QTVRInstance): Single; C;
  494. FUNCTION QTVRSetTiltAngle(qtvr: QTVRInstance; tiltAngle: Single): OSErr; C;
  495. FUNCTION QTVRGetTiltAngle(qtvr: QTVRInstance): Single; C;
  496. FUNCTION QTVRSetFieldOfView(qtvr: QTVRInstance; fieldOfView: Single): OSErr; C;
  497. FUNCTION QTVRGetFieldOfView(qtvr: QTVRInstance): Single; C;
  498. FUNCTION QTVRShowDefaultView(qtvr: QTVRInstance): OSErr; C;
  499. {  Object Specific }
  500. FUNCTION QTVRSetViewCenter(qtvr: QTVRInstance; {CONST}VAR viewCenter: QTVRFloatPoint): OSErr; C;
  501. FUNCTION QTVRGetViewCenter(qtvr: QTVRInstance; VAR viewCenter: QTVRFloatPoint): OSErr; C;
  502. FUNCTION QTVRNudge(qtvr: QTVRInstance; direction: QTVRNudgeControl): OSErr; C;
  503. {  QTVRInteractionNudge requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  504. FUNCTION QTVRInteractionNudge(qtvr: QTVRInstance; direction: QTVRNudgeControl): OSErr; C;
  505. {
  506.   =================================================================================================
  507.     Scene and Node Location Information 
  508.   -------------------------------------------------------------------------------------------------
  509. }
  510.  
  511. FUNCTION QTVRGetVRWorld(qtvr: QTVRInstance; VAR VRWorld: QTAtomContainer): OSErr; C;
  512. FUNCTION QTVRGetNodeInfo(qtvr: QTVRInstance; nodeID: UInt32; VAR nodeInfo: QTAtomContainer): OSErr; C;
  513. FUNCTION QTVRGoToNodeID(qtvr: QTVRInstance; nodeID: UInt32): OSErr; C;
  514. FUNCTION QTVRGetCurrentNodeID(qtvr: QTVRInstance): UInt32; C;
  515. FUNCTION QTVRGetNodeType(qtvr: QTVRInstance; nodeID: UInt32): LONGINT; C;
  516. {
  517.   =================================================================================================
  518.     Hot Spot related calls 
  519.   -------------------------------------------------------------------------------------------------
  520. }
  521.  
  522. FUNCTION QTVRPtToHotSpotID(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32): OSErr; C;
  523. {  QTVRGetHotSpotType requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  524. FUNCTION QTVRGetHotSpotType(qtvr: QTVRInstance; hotSpotID: UInt32; VAR hotSpotType: OSType): OSErr; C;
  525. FUNCTION QTVRTriggerHotSpot(qtvr: QTVRInstance; hotSpotID: UInt32; nodeInfo: QTAtomContainer; selectedAtom: QTAtom): OSErr; C;
  526. FUNCTION QTVRSetMouseOverHotSpotProc(qtvr: QTVRInstance; mouseOverHotSpotProc: QTVRMouseOverHotSpotUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  527. FUNCTION QTVREnableHotSpot(qtvr: QTVRInstance; enableFlag: UInt32; hotSpotValue: UInt32; enable: BOOLEAN): OSErr; C;
  528. FUNCTION QTVRGetVisibleHotSpots(qtvr: QTVRInstance; hotSpots: Handle): UInt32; C;
  529. FUNCTION QTVRGetHotSpotRegion(qtvr: QTVRInstance; hotSpotID: UInt32; hotSpotRegion: RgnHandle): OSErr; C;
  530. {
  531.   =================================================================================================
  532.     Event & Cursor Handling Calls 
  533.   -------------------------------------------------------------------------------------------------
  534. }
  535.  
  536. FUNCTION QTVRSetMouseOverTracking(qtvr: QTVRInstance; enable: BOOLEAN): OSErr; C;
  537. FUNCTION QTVRGetMouseOverTracking(qtvr: QTVRInstance): BOOLEAN; C;
  538. FUNCTION QTVRSetMouseDownTracking(qtvr: QTVRInstance; enable: BOOLEAN): OSErr; C;
  539. FUNCTION QTVRGetMouseDownTracking(qtvr: QTVRInstance): BOOLEAN; C;
  540. FUNCTION QTVRMouseEnter(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  541. FUNCTION QTVRMouseWithin(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  542. FUNCTION QTVRMouseLeave(qtvr: QTVRInstance; pt: Point; w: WindowPtr): OSErr; C;
  543. FUNCTION QTVRMouseDown(qtvr: QTVRInstance; pt: Point; when: UInt32; modifiers: UInt16; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  544. FUNCTION QTVRMouseStillDown(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  545. FUNCTION QTVRMouseUp(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  546. {  These require QTVR 2.01 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion01) }
  547. FUNCTION QTVRMouseStillDownExtended(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr; when: UInt32; modifiers: UInt16): OSErr; C;
  548. FUNCTION QTVRMouseUpExtended(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr; when: UInt32; modifiers: UInt16): OSErr; C;
  549. {
  550.   =================================================================================================
  551.     Intercept Routines 
  552.   -------------------------------------------------------------------------------------------------
  553. }
  554.  
  555. FUNCTION QTVRInstallInterceptProc(qtvr: QTVRInstance; selector: QTVRProcSelector; interceptProc: QTVRInterceptUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  556. FUNCTION QTVRCallInterceptedProc(qtvr: QTVRInstance; VAR qtvrMsg: QTVRInterceptRecord): OSErr; C;
  557. {
  558.   =================================================================================================
  559.     Object Movie Specific Calls 
  560.   -------------------------------------------------------------------------------------------------
  561.    QTVRGetCurrentMouseMode requires QTRVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)
  562. }
  563. FUNCTION QTVRGetCurrentMouseMode(qtvr: QTVRInstance): UInt32; C;
  564. FUNCTION QTVRSetFrameRate(qtvr: QTVRInstance; rate: Single): OSErr; C;
  565. FUNCTION QTVRGetFrameRate(qtvr: QTVRInstance): Single; C;
  566. FUNCTION QTVRSetViewRate(qtvr: QTVRInstance; rate: Single): OSErr; C;
  567. FUNCTION QTVRGetViewRate(qtvr: QTVRInstance): Single; C;
  568. FUNCTION QTVRSetViewCurrentTime(qtvr: QTVRInstance; time: TimeValue): OSErr; C;
  569. FUNCTION QTVRGetViewCurrentTime(qtvr: QTVRInstance): TimeValue; C;
  570. FUNCTION QTVRGetCurrentViewDuration(qtvr: QTVRInstance): TimeValue; C;
  571. {
  572.   =================================================================================================
  573.    View State Calls - QTVR Object Only
  574.   -------------------------------------------------------------------------------------------------
  575. }
  576.  
  577. FUNCTION QTVRSetViewState(qtvr: QTVRInstance; viewStateType: QTVRViewStateType; state: UInt16): OSErr; C;
  578. FUNCTION QTVRGetViewState(qtvr: QTVRInstance; viewStateType: QTVRViewStateType; VAR state: UInt16): OSErr; C;
  579. FUNCTION QTVRGetViewStateCount(qtvr: QTVRInstance): UInt16; C;
  580. FUNCTION QTVRSetAnimationSetting(qtvr: QTVRInstance; setting: QTVRObjectAnimationSetting; enable: BOOLEAN): OSErr; C;
  581. FUNCTION QTVRGetAnimationSetting(qtvr: QTVRInstance; setting: QTVRObjectAnimationSetting; VAR enable: BOOLEAN): OSErr; C;
  582. FUNCTION QTVRSetControlSetting(qtvr: QTVRInstance; setting: QTVRControlSetting; enable: BOOLEAN): OSErr; C;
  583. FUNCTION QTVRGetControlSetting(qtvr: QTVRInstance; setting: QTVRControlSetting; VAR enable: BOOLEAN): OSErr; C;
  584. FUNCTION QTVREnableFrameAnimation(qtvr: QTVRInstance; enable: BOOLEAN): OSErr; C;
  585. FUNCTION QTVRGetFrameAnimation(qtvr: QTVRInstance): BOOLEAN; C;
  586. FUNCTION QTVREnableViewAnimation(qtvr: QTVRInstance; enable: BOOLEAN): OSErr; C;
  587. FUNCTION QTVRGetViewAnimation(qtvr: QTVRInstance): BOOLEAN; C;
  588.  
  589. {
  590.   =================================================================================================
  591.     Imaging Characteristics 
  592.   -------------------------------------------------------------------------------------------------
  593. }
  594.  
  595. FUNCTION QTVRSetVisible(qtvr: QTVRInstance; visible: BOOLEAN): OSErr; C;
  596. FUNCTION QTVRGetVisible(qtvr: QTVRInstance): BOOLEAN; C;
  597. FUNCTION QTVRSetImagingProperty(qtvr: QTVRInstance; imagingMode: QTVRImagingMode; imagingProperty: UInt32; propertyValue: SInt32): OSErr; C;
  598. FUNCTION QTVRGetImagingProperty(qtvr: QTVRInstance; imagingMode: QTVRImagingMode; imagingProperty: UInt32; VAR propertyValue: SInt32): OSErr; C;
  599. FUNCTION QTVRUpdate(qtvr: QTVRInstance; imagingMode: QTVRImagingMode): OSErr; C;
  600. FUNCTION QTVRBeginUpdateStream(qtvr: QTVRInstance; imagingMode: QTVRImagingMode): OSErr; C;
  601. FUNCTION QTVREndUpdateStream(qtvr: QTVRInstance): OSErr; C;
  602. FUNCTION QTVRSetTransitionProperty(qtvr: QTVRInstance; transitionType: UInt32; transitionProperty: UInt32; transitionValue: SInt32): OSErr; C;
  603. FUNCTION QTVREnableTransition(qtvr: QTVRInstance; transitionType: UInt32; enable: BOOLEAN): OSErr; C;
  604. {
  605.   =================================================================================================
  606.     Basic Conversion and Math Routines 
  607.   -------------------------------------------------------------------------------------------------
  608. }
  609.  
  610. FUNCTION QTVRSetAngularUnits(qtvr: QTVRInstance; units: QTVRAngularUnits): OSErr; C;
  611. FUNCTION QTVRGetAngularUnits(qtvr: QTVRInstance): QTVRAngularUnits; C;
  612. {  Pano specific routines }
  613. FUNCTION QTVRPtToAngles(qtvr: QTVRInstance; pt: Point; VAR panAngle: Single; VAR tiltAngle: Single): OSErr; C;
  614. FUNCTION QTVRCoordToAngles(qtvr: QTVRInstance; VAR coord: QTVRFloatPoint; VAR panAngle: Single; VAR tiltAngle: Single): OSErr; C;
  615. FUNCTION QTVRAnglesToCoord(qtvr: QTVRInstance; panAngle: Single; tiltAngle: Single; VAR coord: QTVRFloatPoint): OSErr; C;
  616. {  Object specific routines }
  617. FUNCTION QTVRPanToColumn(qtvr: QTVRInstance; panAngle: Single): INTEGER; C;
  618. {  zero based     }
  619. FUNCTION QTVRColumnToPan(qtvr: QTVRInstance; column: INTEGER): Single; C;
  620. {  zero based     }
  621. FUNCTION QTVRTiltToRow(qtvr: QTVRInstance; tiltAngle: Single): INTEGER; C;
  622. {  zero based     }
  623. FUNCTION QTVRRowToTilt(qtvr: QTVRInstance; row: INTEGER): Single; C;
  624. {  zero based                 }
  625. FUNCTION QTVRWrapAndConstrain(qtvr: QTVRInstance; kind: INTEGER; value: Single; VAR result: Single): OSErr; C;
  626.  
  627. {
  628.   =================================================================================================
  629.     Interaction Routines 
  630.   -------------------------------------------------------------------------------------------------
  631. }
  632.  
  633. FUNCTION QTVRSetEnteringNodeProc(qtvr: QTVRInstance; enteringNodeProc: QTVREnteringNodeUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  634. FUNCTION QTVRSetLeavingNodeProc(qtvr: QTVRInstance; leavingNodeProc: QTVRLeavingNodeUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  635. FUNCTION QTVRSetInteractionProperty(qtvr: QTVRInstance; property: UInt32; value: UNIV Ptr): OSErr; C;
  636. FUNCTION QTVRGetInteractionProperty(qtvr: QTVRInstance; property: UInt32; value: UNIV Ptr): OSErr; C;
  637. FUNCTION QTVRReplaceCursor(qtvr: QTVRInstance; VAR cursRecord: QTVRCursorRecord): OSErr; C;
  638. {
  639.   =================================================================================================
  640.     Viewing Limits and Constraints 
  641.   -------------------------------------------------------------------------------------------------
  642. }
  643.  
  644. FUNCTION QTVRGetViewingLimits(qtvr: QTVRInstance; kind: UInt16; VAR minValue: Single; VAR maxValue: Single): OSErr; C;
  645. FUNCTION QTVRGetConstraintStatus(qtvr: QTVRInstance): UInt32; C;
  646. FUNCTION QTVRGetConstraints(qtvr: QTVRInstance; kind: UInt16; VAR minValue: Single; VAR maxValue: Single): OSErr; C;
  647. FUNCTION QTVRSetConstraints(qtvr: QTVRInstance; kind: UInt16; minValue: Single; maxValue: Single): OSErr; C;
  648.  
  649. {
  650.   =================================================================================================
  651.     Back Buffer Memory Management 
  652.   -------------------------------------------------------------------------------------------------
  653. }
  654.  
  655. FUNCTION QTVRGetAvailableResolutions(qtvr: QTVRInstance; VAR resolutionsMask: UInt16): OSErr; C;
  656. {  These require QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  657. FUNCTION QTVRGetBackBufferMemInfo(qtvr: QTVRInstance; geometry: UInt32; resolution: UInt16; cachePixelFormat: UInt32; VAR minCacheBytes: SInt32; VAR suggestedCacheBytes: SInt32; VAR fullCacheBytes: SInt32): OSErr; C;
  658. FUNCTION QTVRGetBackBufferSettings(qtvr: QTVRInstance; VAR geometry: UInt32; VAR resolution: UInt16; VAR cachePixelFormat: UInt32; VAR cacheSize: SInt16): OSErr; C;
  659. FUNCTION QTVRSetBackBufferPrefs(qtvr: QTVRInstance; geometry: UInt32; resolution: UInt16; cachePixelFormat: UInt32; cacheSize: SInt16): OSErr; C;
  660. {$IFC QTVR_OLD_CALLS }
  661. {$IFC TARGET_OS_MAC }
  662. {
  663.    These ≈Cache≈ calls have been replaced with the ≈BackBuffer≈ versions above.
  664.    However, the ≈BackBuffer≈ calls require QuickTime VR 2.1 to work;
  665.     these calls will work with QuickTime VR 2.0 and 2.0.1, but only on a Macintosh.
  666. }
  667. FUNCTION QTVRGetCacheMemInfo(qtvr: QTVRInstance; resolution: UInt16; cacheDepth: SInt16; VAR minCacheBytes: SInt32; VAR suggestedCacheBytes: SInt32; VAR fullCacheBytes: SInt32): OSErr; C;
  668. FUNCTION QTVRGetCacheSettings(qtvr: QTVRInstance; VAR resolution: UInt16; VAR cacheDepth: SInt16; VAR cacheSize: SInt16): OSErr; C;
  669. FUNCTION QTVRSetCachePrefs(qtvr: QTVRInstance; resolution: UInt16; cacheDepth: SInt16; cacheSize: SInt16): OSErr; C;
  670. {$ENDC}
  671. {$ENDC}  {QTVR_OLD_CALLS}
  672.  
  673. {
  674.   =================================================================================================
  675.     Buffer Access 
  676.   -------------------------------------------------------------------------------------------------
  677. }
  678.  
  679. FUNCTION QTVRSetPrescreenImagingCompleteProc(qtvr: QTVRInstance; imagingCompleteProc: QTVRImagingCompleteUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  680. FUNCTION QTVRSetBackBufferImagingProc(qtvr: QTVRInstance; backBufferImagingProc: QTVRBackBufferImagingUPP; numAreas: UInt16; VAR areasOfInterest: QTVRAreaOfInterest; refCon: SInt32): OSErr; C;
  681. FUNCTION QTVRRefreshBackBuffer(qtvr: QTVRInstance; flags: UInt32): OSErr; C;
  682.  
  683.  
  684. {
  685.   =================================================================================================
  686.     Old Names
  687.   -------------------------------------------------------------------------------------------------
  688. }
  689. {$IFC OLDROUTINENAMES }
  690.  
  691. TYPE
  692.     CursorRecord                        = QTVRCursorRecord;
  693.     CursorRecordPtr                     = ^CursorRecord;
  694.     AreaOfInterest                        = QTVRAreaOfInterest;
  695.     AreaOfInterestPtr                     = ^AreaOfInterest;
  696.     FloatPoint                            = QTVRFloatPoint;
  697.     FloatPointPtr                         = ^FloatPoint;
  698.     LeavingNodeProcPtr                    = QTVRLeavingNodeProcPtr;
  699.     LeavingNodeUPP                        = QTVRLeavingNodeUPP;
  700.     EnteringNodeProcPtr                    = QTVREnteringNodeProcPtr;
  701.     EnteringNodeUPP                        = QTVREnteringNodeUPP;
  702.     MouseOverHotSpotProcPtr                = QTVRMouseOverHotSpotProcPtr;
  703.     MouseOverHotSpotUPP                    = QTVRMouseOverHotSpotUPP;
  704.     ImagingCompleteProcPtr                = QTVRImagingCompleteProcPtr;
  705.     ImagingCompleteUPP                    = QTVRImagingCompleteUPP;
  706.     BackBufferImagingProcPtr            = QTVRBackBufferImagingProcPtr;
  707.     BackBufferImagingUPP                = QTVRBackBufferImagingUPP;
  708. {$ENDC}  {OLDROUTINENAMES}
  709.  
  710.  
  711. {$ALIGN RESET}
  712. {$POP}
  713.  
  714. {$SETC UsingIncludes := QuickTimeVRIncludes}
  715.  
  716. {$ENDC} {__QUICKTIMEVR__}
  717.  
  718. {$IFC NOT UsingIncludes}
  719.  END.
  720. {$ENDC}
  721.